package com.shanjupay.merchant.api;


import com.shanjupay.common.domain.BusinessException;
import com.shanjupay.merchant.api.dto.MerchantDTO;
import com.shanjupay.merchant.api.dto.StaffDTO;
import com.shanjupay.merchant.api.dto.StoreDTO;

//
public interface MerchantService {

    /**
     *  查询租户下的商户
     *
     * @param tenantId
     * @return
     */
    MerchantDTO queryMerchantByTenantId(Long tenantId);

    /**
     *  根据商户id 查询商户信息
     *
     * @param merchantId
     * @return
     * @throws BusinessException
     */
    MerchantDTO queryMerchantById(Long merchantId) throws BusinessException;


    // 根据id 查询商户
    public MerchantDTO queryById(Long id) ;

    /**
     *  注册商户服务接口， 接收账号， 手机号，密码， 为了可扩展性使用 DTO 接收数据
     *
     * @param merchantDTO  商户注册信息
     * @return 注册成功的商户信息
     */
    MerchantDTO createMerchant(MerchantDTO merchantDTO) throws BusinessException;


    /**
     *  资质申请
     *
     * @param merchantId 商户id
     * @param merchantDTO 资质申请信息
     * @throws BusinessException
     */
    public void applyMerchant(Long merchantId, MerchantDTO merchantDTO) throws BusinessException;

    /**
     *  新增门店
     * @param storeDTO  门店信息
     * @return 新增成功的门店信息
     * @throws BusinessException
     */
    StoreDTO createStore(StoreDTO storeDTO) throws BusinessException ;

    /**
     *  新增员工
     *
     * @param staffDTO
     * @return
     * @throws BusinessException
     */
    StaffDTO createStaff(StaffDTO staffDTO) throws BusinessException;


    /**
     *
     *  为门店设置管理员
     *
     * @param storeId
     * @param staffId
     * @throws BusinessException
     */
    void bindStaffToStore(Long storeId,Long staffId) throws BusinessException;



}
